The invention relates to a computer input/output (xe2x80x9cI/Oxe2x80x9d) subsystem monitor for testing, debugging and performance analysis and, more particularly, to I/O subsystem monitoring in computing systems using an intelligent I/O (xe2x80x9cI2Oxe2x80x9d) architecture.
Personal computers have evolved considerably since their widespread introduction in the late 1970""s. Personal computers presently perform many functions that are not strictly xe2x80x9cpersonalxe2x80x9d and increasingly undertake ever more sophisticated tasks. Personal computers are even being applied in arenas traditionally occupied by mainframe computers and UNIX-based workstations. As personal computers continue growing in processing power, they are increasingly finding use as servers in computer networks. A server is essentially a personal computer having larger amounts of local memory than a conventional desktop personal computer that allow the server to process greater volumes of input/output (xe2x80x9cI/Oxe2x80x9d) than a conventional desktop personal computer. Input and output comprise two of the three functions performed by computers (the other is processing). I/O describes the interrelated tasks of providing information to the computer (input) and providing the results of processing to the user (output).
Server I/O predominantly consists of network and disk drive I/O activity, although not strictly limited to these two tasks. A network comprises a group of computers and associated devices connected together by communications facilities, such as those provided by a server. A disk drive may serve as both an input device and an output device since it can both provide information to the computer and receive information from the computer. A device driver comprises a software component that permits a computer to communicate with a device, such as a specific manufacturer""s disk drive.
In a conventional personal computer architecture, each I/O request activates an I/O interrupt in the personal computer""s central processing unit (xe2x80x9cCPUxe2x80x9d) that causes the CPU to stop its present task, flush its instruction pipeline and then service the I/O interrupt. The CPU performs all of the work in a personal computer, interpreting and executing received programming instructions. At any given time, the CPU""s instruction pipeline contains programming instructions in various stages of being fetched, decoded, and processed. A simple disk drive I/O access may invoke multiple I/O interrupts. While a single I/O interrupt will typically not produce noticeable performance degradation in a personal computer, a heavy amount of I/O interrupts, such as commonly experienced by a server, can provoke severe performance degradation. Performance degradation may be exacerbated in some recently developed CPUs, such as the Pentium(copyright) processor, having deeply pipelined structures that were not designed for optimum performance with frequent I/O interrupts.
To reduce the performance degradation due to heavy I/O interrupt activity in personal computers operating as servers, a consortium of companies formed an intelligent I/O special interest group (xe2x80x9cI2O SIGxe2x80x9d) with the express purposes of developing a more efficient I/O subsystem architecture. This consortium developed a specification for an I/O architecture called xe2x80x9cintelligent I/O,xe2x80x9d which is also known as xe2x80x9cI2O.xe2x80x9d The I2O architecture""s essential concept is that a server""s CPU should only receive I/O interrupts that pertain to data ready for processing. The I2O architecture somewhat mimics a conventional mainframe computer""s architecture in which specialized processors and their associated software perform various I/O subsystem tasks. The I2O architecture also includes in its operating system an additional layer for communications. The I2O communications layer provides generic support for any type of device driver.
The I2O architecture offloads the interrupts generated by I/O devices to special purpose I/O processors (xe2x80x9cIOPsxe2x80x9d) that have been designed to quickly service interrupts and protect the server""s CPU from the performance degradations associated with I/O interrupts in the conventional personal computer architecture. The I2O architecture also reduces the software support burden on I/O card manufacturers that had essentially been imposed because of the conventional personal computer architecture.
In an I2O compliant architecture, the operating system communicates I/O requests to an I/O subsystem that contains one or more IOPs using a series of predefined and consistently formatted messages. Accordingly, all I2O compliant I/O devices understand the I2O message format. Thus, the I/O subsystems in the I2O architecture operate separately from the server""s CPU. An operating system controls the allocation and usage of hardware resources such as memory, CPU time, disk space, and peripheral devices. Well-known personal computer operating systems include WINDOWS 95(copyright) and UNIX.
FIG. 1 illustrates a computer network comprised of personal computer servers utilizing the I2O architecture. A computer network 100 comprises three servers 101, 102, and 103 each designed in compliance with the I2O architecture. The server 101 utilizes three IOPs 104, 105, and 106. The server 102 utilizes two IOPs 107 and 108. The server 103 also utilizes two IOPs 109 and 110. The computer network 100 may include functionality that balances the I/O load among the servers 101, 102, and 103 and among the IOPs 104-110. For the reasons discussed above, a CPU I2O in the computer network 100 operates with greater efficiency than it would in a conventional personal computer architecture due to the presence of the IOPs 104-110 that process the I/O interrupts received in the computer network 100.
Conventional personal computer architectures prior to the I2O architecture facilitated the ready extraction of diagnostic information related to device drivers and I/O communications since all I/O message traffic passed through the personal computer""s CPU. An external diagnostic application could easily collect the statistical information related to a device driver""s performance because all underlying communications ran through the operating system and the CPU. Accordingly, all conventional I/O performance data was essentially local information.
In contrast, the I2O architecture does not provide a centralized mechanism for monitoring I/O performance because I/O activity occurs in a plethora of decentralized IOPs. Moreover, the I2O architecture imposes no practical limits on the number of IOPs in a computing system. As a result of the change from the conventional personal computer architecture to the I2O architecture, the conventional methods for measuring I/O performance and operations have been rendered obsolete. Despite the change in personal computer architecture, a need nevertheless remains for measuring overall computing system performance and I/O subsystem communications performance.
The inventive method and apparatus monitors message traffic passing through the input/output (xe2x80x9cI/Oxe2x80x9d) processors within servers in a computing system in order to analyze the I/O processing within the computing system as a whole. A virtual adapter associated with each I/O processor (xe2x80x9cIOPxe2x80x9d) in the computing system""s servers monitors messages passing through its respective IOP to produce message summary data. The servers may include an I/O monitor that generates a server communications model for its respective server using the message summary data provided by the virtual adapters in the server""s IOPs, according to an embodiment of the invention. An I/O user interface develops a computer communications model based upon the server communications models for the servers within the computing system or by directly examining the message summary data in the virtual adapters. The I/O user interface also provides selectable views of the server communications models for each of the computing system""s servers and for the computer communications model.
The virtual adapters include programming code that allows them to insert themselves within the message traffic passing through an IOP from various I2O compliant devices within a server. Once inserted into an IOP""s operating environment, the virtual adapter may begin monitoring message traffic in the IOP. A virtual adapter in a server""s IOP may be accessed throughout the entire computing system by generating a virtual disk drive that is available to the other elements of the computing system. The virtual disk drives contain virtual files, and reading from a virtual file causes information to be sent from the virtual adapter while writing to a virtual file may change the virtual adapter""s configuration settings.
The I/O user interface may alter the performance characteristics for each of the virtual adapters and for each of the I/O monitors in the computing system. The I/O user interface also provides selectable views of the various server communications models and the computing system communications model. These views may be tailored for specific consumers of computing system communications information, such as the detailed views required by an engineer performing systems integration work or analyzing performance variations from one manufacturer""s product to another. The I/O user interface may perform trend analysis regarding the messages passing through the computing system. The I/O user interface also provides selectable filters for viewing message traffic passing through the computing system.